### Описание

Проект с примером использования событийной модели для работы с фикстурами. Событийная модель основана на шаблоне 
проектирования **Observer**, его разновидности **Издатель-Подписчик (Publischer & Subscriber)** с общей шиной для 
уведомлений фикстуры.

В проекте обработчики уведомлений разделяются:
* по типу выполнения:
  * синхронные - классы `SyncMultipleJob.java` и `SyncSingleJob.java`
  * асинхронные - классы `AsyncMultipleJob.java` и `AsyncSingleJob.java`
* по количеству обрабатываемых уведомлений:
  * обработчики одиночных уведомлений - реализация интерфейса `SingleNotificationListener.java`
  * обработчики нескольких уведомлений - реализация интерфейса `MultipleNotificationListener.java`

## Запуск проекта
> mvn clean test -pl fixture-eventer allure:serve

### Расширения JUnit 5

TODO Описать способ подключения классов:
- ExtensionCallbackLifecycle(через аннотацию @ExtendsWith)
- CustomTestExecutionListener (через файл org.junit.platform.launcher.TestExecutionListener)
- AllureTestLifecycleListener (через файл io.qameta.allure.listener.TestLifecycleListener)

### Последовательность вызовов фикстур при запуске тестового класса

* **Запуск тестового класса**
* `BeforeAllCallback`
* `BeforeAll @Deprecated`
  * `BeforeEachCallback`
  * `BeforeEach @Deprecated`
    * `BeforeTestExecutionCallback`
    * **Выполнение тестового метода № 1**
    * `AfterTestExecutionCallback`
  * `AfterEach @Deprecated`
  * `AfterEachCallback`
* **Промежуток между тестами, где не выполняется никаких действий**
  * `BeforeEachCallback`
  * `BeforeEach @Deprecated`
    * `BeforeTestExecutionCallback`
    * **Выполнение тестового метода № 2**
    * `AfterTestExecutionCallback`
  * `AfterEach @Deprecated`
  * `AfterEachCallback`
* `AfterAll @Deprecated`
* `AfterAllCallback`
* * **Завершение запуска тестового класса**

> Методы, помеченные как `@Deprecated` возможно стоит удалить в конечной реализации.
